home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Everything For A Hacker
/
19990506-[HACK].iso
/
HEXEDIT
/
UTILS
/
80X0393.ARJ
/
CRC16.ASM
< prev
next >
Wrap
Assembly Source File
|
1993-03-30
|
1KB
|
45 lines
; Written by Chris Barrett (3:690/660.25)
; The following non table-based routine produces the same CRC16's
; as required by the EMSI standard so I assume it's correct.
; Released into the Public Domain
; Pass - DS:SI = pointer to the buffer
; - CX = length of the buffer
; Returns - DX = CRC16 of the buffer
CRC16 PROC NEAR
PUSH AX
PUSH BX
PUSHF
CLD ; Move forward through the buffer
SUB DX,DX ; CRC := 0000h
C1: LODSB ; AL := byte at DS:SI
SUB AH,AH
XCHG AH,AL ; AX := 256 * AL
XOR DX,AX ; CRC := CRC xor AX
PUSH CX
MOV CX,8
C2: MOV BX,DX
SHL DX,1
AND BX,8000h
JZ C3
XOR DX,1021h
C3: LOOP C2
POP CX
LOOP C1
POPF
POP BX
POP AX
RET
CRC16 ENDP